import this # improt를 통해 파이썬의 라이브러리나 패키지를 가져올 수 있음
3: 데이터 분석 준비하기
부스트코스
Zen of Python
- 파이썬의 철학이 잘 담겨있는 Zen of Python을 출력해 봅니다. (아래의 실습을 통해 확인해 보세요!)
boolean
파이썬에서는 명시적인 것이 암시적인 것보다 낫다라는 철학이 있습니다.
True나 False는 0과 1로도 표현할 수 있으나 명시적으로 표현하기 위해 True와 False를 사용합니다.
True
True
False
False
True == 1
True
False == 0
True
True == "1" # True와 문자 1과는 다르다! 1따옴포=문자열
False
True != "1"
True
False == "0"
False
False != "0"
True
True and True
True
True and False
False
True or False #or연산자: 하나만 true여도 true
True
number and String
- 숫자 1과 문자 “1”은 다르다! 데이터 타입 “type” 사용
"1"
'1'
type(1)
int
type("1")
str
Strings and Lists
= "Today I learned"
til til
'Today I learned'
#다 소문자로 변경 til.lower()
'today i learned'
#대문자 변경 til.upper()
'TODAY I LEARNED'
# 비어있는 리스트 만들기. lang라는 변수에 담기
= []
lang lang
[]
"python")
lang.append("java")
lang.append("c")
lang.append( lang
['python', 'java', 'c']
0] #lnag이라는 변수에 담겨있는 언어명을 인덱싱을 통해 가져오기 lang[
'python'
1] lang[
'java'
-1] lang[
'c'
Control Flow
- 제어문-조건문, 반복문
for i in lang:
print(i)
python
java
c
for i in lang:
if i == "python":
print("python")
else:
print("기타") # indent를 맞춰줘야 한다.
python
기타
기타
# 특정 횟수만큼 반복문 실행
= len(lang)
count for i in range(count):
print(lang[i])
python
java
c
# 짝수일때 python을 홀수일때 java출력
for i in range(1,10): # `1에서 9까지
if i % 2 == 0: #짝수만 출력
print("python")
else:
print("java")
java
python
java
python
java
python
java
python
java
# enumerate를 사용하면 인덱스 번호와 원소를 같이 가져온다
for i, val in enumerate(lang):
print(i,val)
0 python
1 java
2 c
문자열
= " 경기도 성남시 분당구 불정로 6 NAVER 그린팩토리 16층 "
address address
' 경기도 성남시 분당구 불정로 6 NAVER 그린팩토리 16층 '
# 앞뒤 공백 제거
# 데이터 전처리 시 주로 사용
= address.strip()
address address
'경기도 성남시 분당구 불정로 6 NAVER 그린팩토리 16층'
# 문자열 길이
len(address)
33
# 공백으로 문자열 분리
= address.split()
address_list address_list
['경기도', '성남시', '분당구', '불정로', '6', 'NAVER', '그린팩토리', '16층']
슬라이싱, startswith, in 을 통해 문자열에 경기아 있는지 확인하기
2] address[:
'경기'
"경기") address.startswith(
True
"경기" in address
True
리스트
- 문자열에서 쓰는 방법과 비슷한 메소드 등을 사용
2] address_list[
'분당구'
= address_list[3]
street street
'불정로'
-1] address_list[
'16층'
# "".join(리스트)를 사용하면 리스트를 공백 문자열로 연결 한다
"-".join(address_list)
'경기도-성남시-분당구-불정로-6-NAVER-그린팩토리-16층'
"경기" in address_list
False
"경기도" in address_list
True
"분당구" in address_list
True
# pandas (패널 데이터 앤 시스템의 약자)
# 수식과 그래프를 통해 계산 및 시각화하는 도구
# 엑셀을 사용 했을때보다 대용량 데이터를 쓸수 있고 소스 코드 파일만 데이터 프레임 로드를 해서 소스코드들을 재사용 할 수 있다.
# 월별 작업과 같은 반복작업..
# 아래에 첨부된 10 minutes to pandas를 한 번씩 실행해보시면 판다스의 전반적인 것을 익힐 수 있습니다.
# 추가로 같이 첨부된 Pandas Cheat Sheet도 추천드립니다.
import pandas as pd
pd.DataFrame?
# 공식문서 (도움말) 활용하기
pd.DataFrame()# shift+tab+tab
DataFrame
= pd.DataFrame(
df "a" : [4, 5, 6, 6],
{"b" : [7, 8, 9, 9],
"c" : [10, 11, 12, 12]},
= [1, 2, 3, 4])
index df
a | b | c | |
---|---|---|---|
1 | 4 | 7 | 10 |
2 | 5 | 8 | 11 |
3 | 6 | 9 | 12 |
4 | 6 | 9 | 12 |
Series
# 1차원 자료구조.. (벡터!)
"a"]
df[# 출력된 형태: series 데이터
1 4
2 5
3 6
Name: a, dtype: int64
# dataframe으로 변경 (2차원 자료구조) (행렬!)
"a"]] df[[
a | |
---|---|
1 | 4 |
2 | 5 |
3 | 6 |
Subset
"a"] > 4] df[df[
a | b | c | |
---|---|---|---|
2 | 5 | 8 | 11 |
3 | 6 | 9 | 12 |
"a"] df[
1 4
2 5
3 6
Name: a, dtype: int64
"a","b"]]
df[[# df["a","b"] 이렇게 쓰면 오류가 난다. 대괄호를 또 해주기
a | b | |
---|---|---|
1 | 4 | 7 |
2 | 5 | 8 |
3 | 6 | 9 |
Summarize Data
"a"].value_counts()
df[# 빈도수 계산
6 2
4 1
5 1
Name: a, dtype: int64
len(df)
4
Reahaping
- sort_values, drop
"a",ascending=False)
df.sort_values(#ascending= 역수
a | b | c | |
---|---|---|---|
3 | 6 | 9 | 12 |
4 | 6 | 9 | 12 |
2 | 5 | 8 | 11 |
1 | 4 | 7 | 10 |
= df.drop(["c"], axis=1)
df # 기본 설정은 axis=0 으로 되어있으므로 axis를 바꿔줘야 함
df
a | b | |
---|---|---|
1 | 4 | 7 |
2 | 5 | 8 |
3 | 6 | 9 |
4 | 6 | 9 |
Group Data
- Groupby, pivot_table
# "a" 컬럼값을 Groupby하여 "b"의 컬럼값 구하기
"a"])["b"].mean() df.groupby([
a
4 7.0
5 8.0
6 9.0
Name: b, dtype: float64
"a"])["b"].agg(["mean", "sum", "count"]) df.groupby([
mean | sum | count | |
---|---|---|---|
a | |||
4 | 7.0 | 7 | 1 |
5 | 8.0 | 8 | 1 |
6 | 9.0 | 18 | 2 |
"a"])["b"].describe() #요약하는거 df.groupby([
count | mean | std | min | 25% | 50% | 75% | max | |
---|---|---|---|---|---|---|---|---|
a | ||||||||
4 | 1.0 | 7.0 | NaN | 7.0 | 7.0 | 7.0 | 7.0 | 7.0 |
5 | 1.0 | 8.0 | NaN | 8.0 | 8.0 | 8.0 | 8.0 | 8.0 |
6 | 2.0 | 9.0 | 0.0 | 9.0 | 9.0 | 9.0 | 9.0 | 9.0 |
="a", values="b", aggfunc="sum") pd.pivot_table(df, index
b | |
---|---|
a | |
4 | 7 |
5 | 8 |
6 | 18 |
Plotting
df.plot.bar()
!conda env list
# conda environments:
#
base /home/koinup4/anaconda3
py37 * /home/koinup4/anaconda3/envs/py37
py39 /home/koinup4/anaconda3/envs/py39